---
sidebar_position: 3
---

import Image from '@theme/IdealImage';

# 调试您的插件

插件开发过程中，通常会遇到一些代码逻辑错误、插件的兼容性问题、性能瓶颈等挑战。

合理的使用断点能够帮助我们快速分析、定位问题。

而插件调试需要先在 IDEA 中进行 `运行/调试配置` 的编辑。

## 编辑调试配置 \{#edit-debug-config}

使用 IDEA 打开项目。

<Image img={require('./images/debug_config_edit_menu.png')} alt="编辑调试配置菜单" />

1. 在顶栏中，打开 `运行/调试配置` 窗口。
2. 选择 `JAR 应用程序` 模板。

<Image img={require('./images/add_jarapp_debug_config.png')} alt="选择JAR应用程序" />

3. 编辑窗口内容

| 字段 | 描述 |
| --- | --- |
| 名称 | Nukkit-MOT |
| JAR 路径 | 指 `Nukkit-MOT-SNAPSHOT.jar` 的完整路径 |
| 工作目录 | 指 `Nukkit-MOT` 服务端所处的文件夹路径 |
| JRE | 选择 Java 17 运行时 |

最后点击 `确定` 即可。

<Image img={require('./images/edit_debug_config_window.png')} alt="编辑调试配置窗口" />

## 自动更新插件到插件目录 \{#auto-update-plugin}

通过上述操作，我们已经可以使用 `Shift + F9` 组合键进行代码调试。

值得注意的是，只有 jar 插件与现在项目中的构建产物相同时，才能使用断点进行分析。

在此，为了方便，我们希望在每次构建成功后自动更新插件到 `plugins` 目录下。

下面介绍如何对 Maven 项目的 `pom.xml` 文件进行配置，以实现我们的需求。

### 添加相关属性 \{#adding-relevant-properties}

```xml title="pom.xml"
    <groupId>cn.nukkitmot</groupId>
    // highlight-start
    <artifactId>example-plugin</artifactId>
    // highlight-end
    <version>1.0.0</version>
    <name>ExamplePlugin</name>
    <description>An Example Nukkit-MOT Plugin</description>
    <url>https://github.com/MemoriesOfTime/ExamplePlugin-Maven/</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        
        // highlight-start
         <nukkitPluginsPath>C:\BedrockServer\MOT\plugins</nukkitPluginsPath>
        // highlight-end
    </properties>
```

artifactId 是插件名称，默认情况下构建产物的名称为包含此值。

nukkitPluginsPath 是插件目录的路径，需要手动添加调试环境中的 `plugins` 目录。

### 添加 Maven plugins 标签 \{#adding-maven-plugins-tag}

标签 `<build>` 被包含在 `<project>` 中。

```xml title="pom.xml"
    <build>
        <defaultGoal>clean package</defaultGoal>

        <plugins>
            // highlight-start
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <outputDirectory>${nukkitPluginsPath}</outputDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${nukkitPluginsPath}</directory>
                            <includes>
                                <include>${artifactId}*.jar</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
                <executions>
                    <execution>
                        <phase>pre-clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            // highlight-end
        </plugins>
    </build>
```

### 使用 \{#usage}

1. 在 IDEA 右侧点击字母 **M** 图标，打开 Maven 选项卡。
2. 点击 `clean` 进行清理，点击 `package` 进行构建打包。

请注意需要先进行清理而后再进行构建打包，否则上一次的 jar 产物不会被更新。

```txt
ExamplePlugin
    生命周期
        // highlight-start
        clean
        // highlight-end
        validate
        compile 
        test 
        // highlight-start
        package
        // highlight-end
        verify
        install
        site 
        deploy
    插件
    依赖项
    仓库
```

恭喜你，至此已经完成所有配置。